package com.yanqu.road.utils.order;

import com.yanqu.road.utils.string.StringUtils;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.ThreadLocalRandom;

public class OrderHelper {
	private static ThreadLocal<SimpleDateFormat> dateFormat = new ThreadLocal<SimpleDateFormat>() {
		@Override
		protected SimpleDateFormat initialValue() {
			return new SimpleDateFormat("yyyyMMddHHmmssSSS");
		}
	};

	/**
	 * 生成订单号
	 */
	public static String generateOrderNum() {

		StringBuilder orderNumStr = new StringBuilder();

		Date nowDate = new Date();
		orderNumStr.append(dateFormat.get().format(nowDate));

		// 在生成七位随机数
		orderNumStr.append(randomStr(7));

		return orderNumStr.toString();
	}

	public static String randomStr(int length) {
		StringBuilder randomStr = new StringBuilder();
		for (int i = 0; i < length; i++) {
			randomStr.append((char) ThreadLocalRandom.current().nextInt(97, 122));
		}
		return randomStr.toString();
	}

	/**
	 * 描述：是否代币订单
	 * 作者：zrq
	 * 时间：2022/4/12
	 * 参数：
	 订单号
	 * 返回值：
	 **/
	public static boolean isTokensOrder(String orderNo){
		if(!StringUtils.isNullOrEmpty(orderNo)){
			return orderNo.startsWith("Tokens_");
		}
		return false;
	}

	/**
	* 描述：获取取消订阅订单号，加前缀
	* 作者：zrq
	* 时间：2023/3/23
	* 参数：

	* 返回值：
	**/
	public static String getSubscribeOrderNo(String sdkOrderNo){
		String result = "cancel_";
		result += sdkOrderNo;
		return result;
	}
}
